package net.zjitc.myTree;

/**
 * Created by Administrator on 2017/4/27.
 */
public interface MyBinaryTree<E> {
   //建立二叉树（生成根结点和左右子树的二叉树）
    //public void creat(E val,TreeNode<E> lChild,TreeNode<E> rChild);

   // 获得左子树(获得树根结点的左子树)
    public TreeNode<E> getLChild(TreeNode<E> p);

    //获得右子树
    public TreeNode<E> getRChild(TreeNode<E> p);

    //插入结点到左子树(新结点插入到左子树)
    public  void insertL(E val, TreeNode<E> p);

   // 插入结点到右子树
    public  void insertR(E val, TreeNode<E> p);

   // 删除左子树(删除某个结点的左子树)
    public TreeNode<E> deleteL(TreeNode<E> p);

   // 删除右子树
   public TreeNode<E> deleteR(TreeNode<E> p);

   // 查找结点(查找数据元素与某个结点元素相同的结点)
    //给一个树，从二叉树中查找值为val的结点
    public TreeNode<E> search(TreeNode<E> root ,E val);

    //遍历二叉树（按某种方式遍历二叉树的全部结点）
    //因为二叉树有很多种遍历方式 ，i表示用的哪种遍历方式
     public void traverse(TreeNode<E> root, int i);

}
